-- by huzhike 2020-11-10 cite wushaolong
local iputils = require("resty.iputils")
-- 允许的ip地址列表
local allowlist_ips = {
        "47.98.116.66",
        "121.196.209.126",
        "116.62.119.31",
        "121.8.183.34",
	"112.91.246.236",
        "192.168.0.0/16",
        "121.33.194.56/29",
        "219.137.165.240/29"
}

-- 获取请求头里面的用户真实ip地址
local headers = ngx.req.get_headers()
local client_ip = headers["X-FORWARDED-FOR"] or ngx.var.remote_addr or headers["X-REAL-IP"]

-- 获取一个表格格式的IPV4网络表，并返回一个表格containg的表格的下面的地址。如果表中存在无效网络，则记录错误并返回其他网络
allowlist = iputils.parse_cidrs(allowlist_ips)

-- 获取一个字符串IPv4地址和一个已经解析的CIDRs表，如果IP中存在 IP，则返回一个true
if not iputils.ip_in_cidrs(client_ip, allowlist) then
        return ngx.exit(ngx.HTTP_FORBIDDEN)
end
